#ifndef SYSCALL_H
#define SYSCALL_H

#include "main.h"
#include "structs.h"
#include "print.h"
#include "input.h"
#include "scheduler.h"
#include "fs.h"
#include "elf.h"
#include "environ.h"

/**
Liste der Syscalls. Änderungen bitte auf jeden Fall einfügen!!

EAX	Funktion
======================
1	print
2	clearscreen
3	scrollscreen
4	gets
5	getchar
6	printf
7	malloc
8	free
9	exit
10	open
11	close
12	read
13	write
14	seek
15	tell
16	stat
17	GetRunningTaskPID (getpid)
18	DestroyTask (kill)
19	wait
20	system
21	opendir
22	closedir
23	readdir
24	rewinddir
25	realloc
26-29	RESERVIERT FÜR ZUKÜNFTIGE CALLS
30	getcwd
31	chdir
32	env_add (UV ändern)
33	env_get (UV abfragen)
34	env_remove (UV löschen)

**/

/* Wird von idt_behandlung aufgerufen, wenn der Syscall Interrupt aufgerufen wird
 * Parameter: Aktuelle CPU Register des Aufrufers, Pointer auf die Task Struktur des Aufrufers
 * Rückgaben: Keine, werden dem Aufrufer in Registern übergeben (EBX)
 */
void syscall_handler (struct stack_frame *, struct task *);

#endif
